package com.bjpowernode.javase.collection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

/*
测试List接口常用的方法。
    1、list集合存储元素的特点：有序可重复
        有序：list集合中的元素有下标，从0开始，以1递增。
        可重复：存储一个1还可以存储一个1.
    2、list既然是Collection接口的子接口，那么list接口肯定有自己的特有的方法。
        以下只列出list特有的、常用的方法：
        	void add(int index, E element)
        	Object get(int index)
        	int	indexOf(Object o)
        	int	lastIndexOf(Object o)
        	Object	remove(int index)
        	Object	set(int index, Object element)

 */
public class ListTest01 {
    public static void main(String[] args) {
        //创建List类型的集合
        //List myList = new LinkedList();
        List myList = new ArrayList();

        //添加元素
        myList.add("A");//默认为向集合尾部插入元素
        myList.add("B");
        myList.add("C");
        myList.add("C");
        myList.add("D");
        //向集合指定位置插入元素
        //这个方法使用不多，因为对于数组来说效率较低，因为涉及到元素的位移问题。
        myList.add(1,"KING");

        System.out.println("是否包含A:" + myList.contains("A"));
        //迭代
        Iterator it = myList.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
        
        //通过下标遍历
        Object firstObj = myList.get(0);
        System.out.println("第一个元素为：" + firstObj);

        for (int i = 0; i < myList.size(); i++) {
            Object obj = myList.get(i);
            System.out.println(obj);
        }

        //获取指定第一次出现处的索引
        System.out.println(myList.indexOf("KING"));

        //获取指定对象最后一次出现处的索引
        System.out.println(myList.lastIndexOf("C"));

        //删除指定下标位置的元素

        myList.remove(0);
        System.out.println(myList.size());

        System.out.println("===============");

        //修改指定位置的元素
        myList.set(2,"Soft");
        //遍历集合
        for (int i = 0; i < myList.size(); i++) {
            Object obj = myList.get(i);
            System.out.println(obj);

        }
    }
}
/*
计算机常用英语：增删改查。
    增：add,save,new;
    删：delete,drop,remove;
    改：update,set,modify;
    查：find,get,query,select
 */
